草庐IT

git pull --rebase

全部标签

git - 我如何 `git rebase -i` 并防止 "You asked to amend the most recent commit, but doing so would make it empty."?

我想运行一个gitrebase-isome-hash。当我运行它时,出现错误:Youaskedtoamendthemostrecentcommit,butdoingsowouldmakeitempty.Youcanrepeatyourcommandwith--allow-empty,oryoucanremovethecommitentirelywith"gitresetHEAD^".[...]Couldnotapply[...]该错误似乎特定于单个提交,因为--allow-empty不是我可以传递给rebase的选项。显然--keep-empty是我可以传递给gitrebase的选项,

Git rebase 出现 'unlink of file failed' 错误

使用msysgit1.7.0.2,在执行gitrebase-i时,挂起并且没有消息。输入ctrl+c后可以看到'unlinkoffilefailed,shouldItryagain(y/n)?'然后我尝试了gitrebase--abort但得到了同样的错误信息。所以现在它停留在rebase过程的中间。这个错误似乎是由只读文件引起的。有什么办法可以解决这个问题吗? 最佳答案 您尝试过setGIT_ASK_YESNO=false吗?这个Googlegroupthread在最近的mingwevolutions中提到了它:Makeuseof

algorithm - 与 git 中的 merge 相比,rebase 有什么优势?

在thisarticle,作者用这张图解释了rebase:Rebase:Ifyouhavenotyetpublishedyourbranch,orhaveclearlycommunicatedthatothersshouldnotbasetheirworkonit,youhaveanalternative.Youcanrebaseyourbranch,whereinsteadofmerging,yourcommitisreplacedbyanothercommitwithadifferentparent,andyourbranchismovedthere.虽然正常的merge看起来像这

git - 当 git rebase 两个具有共享历史的分支时,是否有一种简单的方法可以让共同的历史保持共同?

假设我们有以下修订图:A-X-Z--B\\-CA在B和C之前。进一步假设我从上游rebaseA,创建一个新的提交A*,然后将B和Crebase到A*。生成的修订图如下:A*-X'-Z'-B\\-X"-Z"-C请注意,共享历史不再共享。有没有一种简单的方法来解决这个问题,除了,比方说,将Brebase然后将C显式地rebase到Z'上。换句话说,是否有更好的方法同时自动rebase多个分支以保留共享历史记录?不得不在分割点人为地放置一个标签,或者手动检查图形以找出提交的sha1来重新设置C以保留共享历史记录,这似乎有点尴尬,更不用说打开可能性了很多错误,特别是因为我每次rebase时都必

无需打开编辑器的 Git 交互式 rebase

Git允许某些命令在不先打开编辑器的情况下创建或修改提交,例如:gitcommit--amend--no-editgitcommit--fixup=HEAD^我已将rebase.autosquash设置为true,以便交互式rebase的待办事项列表会自动重新排序。有没有一种方法可以立即执行rebase,而无需先打开编辑器,例如:gitrebase-i--no-editHEAD~3 最佳答案 TL;DR回答:GIT_SEQUENCE_EDITOR=:gitrebase-iHEAD~3你不能阻止gitrebase--interacti

git rebase 一次又一次地解决冲突?

每次我在原始版本的新版本上gitrebase我的补丁集时,我是否必须一次又一次地手动解决冲突? 最佳答案 查看git-rerere. 关于gitrebase一次又一次地解决冲突?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3516899/

git - 分支的交互式 rebase 及其与 master 的分歧点

假设我有一个主题分支,我想重写它的整个历史,因为它最初是从master为pull请求创建的。无论出于何种原因,使用gitlog都不容易或明显确定我要传递给的提交哈希gitrebase-i我知道我可以使用gitmerge-base找到两个引用可以从中追踪其祖先的提交,并可以使用它来确定提交。我想知道的是,是否有比使用gitrebase-i`gitmerge-basemy_branchmaster`编辑:我不想更改在此分支上进行的第一次提交的父级,所以gitrebase-imaster仅在分支创建后两个主节点都没有推进并且分支是从当前指向的提交主节点创建的情况下才有效。

git - 总是 git pull --rebase master branch 可以吗

我们是一个使用git的团队,我们有一个中央存储库(单一来源),我们用它来push和pull(capistrano使用它来部署分支大师)我们定期提交和部署(每天部署10~20次),这意味着我们有很多merge提交,gitblame成为一场噩梦我读过,为了让历史更简单,我们可以使用gitpull--rebase来避免这种情况。始终在master分支上执行此操作是个好主意吗?如果是,我建议在配置中设置它:gitconfigbranch.master.rebasetrue这有什么问题吗? 最佳答案 完全没有问题。事实上,这是首选。99%的情

git - 从失败的 rebase 中恢复

我正在使用gitsvn通过公司授权的svn服务器获得一些git的好处。我刚刚有一个rebase出现了可怕的错误,我正在尝试找出最好的恢复方法。事情是这样的:首先,我有这个---1(master)\--B--C--D--E(feature/fix-widgets)然后我在master上执行了gitcheckoutmaster和gitsvnrebase来pull下那些提交。我没有预料到我的功能分支和master分支之间有任何冲突,因为更改在一个完全不同的文件夹中。所以在这一点上,我想我有这个:---1--2--3--4(master)\--B--C--D--E(feature/fix-wi

git:获得 `git rebase --interactive` 的好处,用于 cherry picks

我希望能够做到这一点:gitcherry-pick--interactivehash-0..hash-n-1#fantasycommand并获得与交互式rebase相同的工作流程:出现一个编辑器缓冲区,其中包含:pickhash-0pickhash-1pickhash-2...pickhash-n-1在这里我可以删除任何不需要的提交,压缩它们在一起,或者编辑在选择之间暂停以进行一些手动修复(比如commit--amend)等等。请注意交互式rebase的pick与cherry-pick非常相似。现在上面的操作可以先cherry-pick,再interactiverebase来完成,比较